#include<iostream>
#include<pthread.h>
#include<unistd.h>

using namespace std;


////初探条件变量z--苹果生产商
//int apple=0;
//
//pthread_mutex_t mutex;
//pthread_cond_t cond;
//pthread_cond_t prcond;
//void* Routine1(void* s)
//{
//  char* ch=(char*)s;
//  //生产商
//  while(1)
//  {
//     pthread_mutex_lock(&mutex);
//     if(apple==0)
//     {
//       //生产
//       apple=1;
//       cout<<ch<<" is a pro, the apple create "<<endl;
//       sleep(1);
//     }
//     //唤醒
//     //pthread_cond_broadcast(&cond)  //唤醒全部，大家竞争
//     pthread_cond_signal(&cond);   //依次唤醒，实现同步
//
//     //等待
//     pthread_cond_wait(&prcond,&mutex);
//
//     pthread_mutex_unlock(&mutex);
//  }
//}
//void* Routine2(void*s)
//{
//  char* ch=(char*)s;
//  //在没有生产时，进行等待
//  while(1)
//  {
//    pthread_cond_wait(&cond,&mutex);
//    //消费
//    apple--;
//    cout<<ch<<" get a apple "<<endl;
//    sleep(1);
//    //通知生产
//    pthread_cond_signal(&prcond);
//  }
//  return nullptr;
//}
//int main()
//{
//  pthread_t t1,t2,t3;
//
//  pthread_mutex_init(&mutex,nullptr);
//  pthread_cond_init(&cond,nullptr);
//  pthread_cond_init(&prcond,nullptr);
//
//  pthread_create(&t1,nullptr,Routine1,(void*)"thread1");
//  pthread_create(&t2,nullptr,Routine2,(void*)"thread2");
//  pthread_create(&t3,nullptr,Routine2,(void*)"thread3");
//
//  //主线程
//  pthread_join(t1,nullptr);
//  pthread_join(t2,nullptr);
//  pthread_join(t3,nullptr);
//
//  pthread_mutex_destroy(&mutex);
//  pthread_cond_destroy(&cond);
//  pthread_cond_destroy(&prcond);
//}
